package com.zhengwl.study.nest;

public class Outer {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	// 静态嵌套类
	// 与静态方法与静态字段类似，静态嵌套类是与其所在类相关的。
	// 静态嵌套类不能直接使用实例变量或者实例字段，而只能通过一个对象引用，可将静态嵌套类视为跟其他顶级类一样，只不过是内嵌在其他类里面，方便打包。
	// 不加public 只能在同一个package下使用
	public static class StaticNested {
		private int height;

		public int getHeight() {
			return height;
		}

		public void setHeight(int height) {
			this.height = height;
		}

		public void testDo() {
			// 静态嵌套类不能使用外部类非静态成员
			// String tString=name;
		}
	}

	public class Nested {

		public Nested() {
			System.out.println("-----------inner class constructor-----------");
		}

		// 非静态内部类不能拥有静态成员
		// static int statiWidth = 1;
		static final int width = 1;
		private int height;

		public int getHeight() {
			return height;
		}

		public void setHeight(int height) {
			this.height = height;
		}
	}

	public void testMethodInnerClass() {
		final int a = 10;
		// 局部类
		class Inner {
			public void seeOuter() {
				System.out.println(a);
			}
		}
		Inner in = new Inner();
		in.seeOuter();
	}
}
